import os
from playwright.sync_api import Page, Locator, expect
import datetime
import random

def get_path(path: str) -> str:
    if path[0] != "/":
        path = f"/{path}"
    return f"{os.path.abspath(os.path.dirname(os.path.dirname(__file__)))}{path}"


def 日期控件(page: Page, locator: Locator, 相对日期: int):
    tmp_time = datetime.datetime.now() + datetime.timedelta(days=相对日期)
    year = tmp_time.year
    month = tmp_time.month
    day = tmp_time.day
    locator.click()
    page.locator('.thy-calendar-year-btn').click()
    page.locator('//td[@role="gridcell"]').filter(has_text=f"{year}").locator("a").click()  # 年
    page.locator('.thy-calendar-month-btn').click()
    page.locator('//td[@role="gridcell"]').nth(month - 1).click()  # 月
    page.locator('//td[@role="gridcell"][not(contains(@class,"month))]').filter(has_text=f"{day}").click()  # 日

def 暂无数据(page: Page):
    try:
        # 先检查"暂无数据"元素是否可见且文本匹配
        expect(page.locator(".el-table__empty-text")).to_be_visible()
        expect(page.locator(".el-table__empty-text")).to_have_text("暂无数据")
        print("确认：暂无数据")
    except Exception:
        # 如果"暂无数据"不满足条件，则期望搜索结果可见
        expect(page.locator(".el-table__body-wrapper").locator("tbody").locator("tr").nth(0).locator("td").nth(1)).to_be_visible()
        print("搜索结果已显示")


def 随机获取列表(page: Page):
    列表 = page.locator(".el-cascader-menu__wrap").nth(2).locator("li")
    count = 列表.count()
    if count > 0:
        # 随机选择一个索引
        random_index = random.randint(0, count - 1)
        # 点击对应的 li
        列表.nth(random_index).click()